bitkeeper revision 1.122.4.1 (3e70f9de9vqrPg9WRlAsGz1oZFMW9g)
authoriap10@labyrinth.cl.cam.ac.uk <iap10@labyrinth.cl.cam.ac.uk>
Thu, 13 Mar 2003 21:36:30 +0000 (21:36 +0000)
committeriap10@labyrinth.cl.cam.ac.uk <iap10@labyrinth.cl.cam.ac.uk>
Thu, 13 Mar 2003 21:36:30 +0000 (21:36 +0000)
Don't profile time spent printing our perf counters!

xen/arch/i386/irq.c
xen/common/perfc.c
xen/drivers/char/xen_kbd.c
xen/drivers/char/xen_serial.c
xen/include/asm-i386/irq.h

index 312cfe797067088f27ae862130912985837c3fbf..6485b6ba15ccb20a020320635dc31874ad650a36 100644 (file)
@@ -537,7 +537,9 @@ asmlinkage unsigned int do_IRQ(struct pt_regs regs)
         do_softirq();
 
     rdtscl(cc_end);
-    perfc_adda(irq_time, cpu, cc_end - cc_start);
+
+    if(!action || (!(action->flags & SA_NOPROFILE)) )
+        perfc_adda(irq_time, cpu, cc_end - cc_start);
 
     return 1;
 }
index cc277a914a068596e2b3fbab2d40adcbf85a3268..704bef1d3b52b6465274ff5c7de3fed32a27d287 100644 (file)
@@ -47,18 +47,18 @@ void __perfc_print (unsigned long counter[], int offset)
       return;
   }
   if (element_size == 0) {                              /* single counter */
-      printf ("%10ld  0x%08lx  %s\n", counter[0], counter[0],
+      printf ("%10lu  0x%08lx  %s\n", counter[0], counter[0],
               perfc_name[loop] + 2 + num);
   } else if (cpus) {                                    /* counter per CPU  */
       for (loop = 0; loop < smp_num_cpus; loop++) {
-          printf ("%10ld  0x%08lx  cpu[%02d] %s\n", 
+          printf ("%10lu  0x%08lx  cpu[%02d] %s\n", 
                   counter[loop], counter[loop], 
                   loop, perfc_name[loop]);
       }
       
   } else {                                             /* show entire array */
       for (loop = 0; loop < element_size; loop++) {
-          printf ("%10ld  0x%08lx  %s:%d\n", 
+          printf ("%10lu  0x%08lx  %s:%d\n", 
                   counter[loop], counter[loop], 
                   perfc_name[loop] + 2 + num, loop);
       }
@@ -103,6 +103,8 @@ void perfc_printall (u_char key, void *dev_id, struct pt_regs *regs)
         }
     }
 
+    //perfc_reset( key, dev_id, regs );
+
     return;
 }
 
index dc9379a06cbc4d5dd4d0920643ddabb0cb84384e..b103f2fb4ea837012856dcfedd24e3480e7b974b 100644 (file)
@@ -1,4 +1,5 @@
 #include <asm-i386/io.h>
+#include <asm-i386/irq.h>
 #include <xeno/sched.h>    /* this has request_irq() proto for some reason */
 #include <xeno/keyhandler.h>  
 
@@ -183,7 +184,7 @@ static void keyboard_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 
 void initialize_keyboard()
 {
-    if(request_irq(KEYBOARD_IRQ, keyboard_interrupt, 0, "keyboard", NULL))
+    if(request_irq(KEYBOARD_IRQ, keyboard_interrupt, SA_NOPROFILE, "keyboard", NULL))
        printk("initialize_keyboard: failed to alloc IRQ %d\n", KEYBOARD_IRQ); 
 
     return; 
index 4fba991997ccd8d8243061c18fe36aaba74772f1..95107e587d5421e2d726bdc8309714903f54f30f 100644 (file)
@@ -85,6 +85,6 @@ void initialize_serial()
     outb(NS16550_MCR_OUT2, SERIAL_BASE + NS16550_MCR);   /* Modem control */
     outb(NS16550_IER_ERDAI, SERIAL_BASE + NS16550_IER ); /* Setup interrupts */
 
-    if((rc = request_irq(4, serial_rx_int, 0, "serial", 0)))
+    if((rc = request_irq(4, serial_rx_int, SA_NOPROFILE, "serial", 0)))
        printk("initialize_serial: failed to get IRQ4, rc=%d\n", rc); 
 }
index 41049e71b2268e7c8de935aa71b9a0615809487e..21c24f4483b9237aae4bdddc97bad426c7613747 100644 (file)
@@ -8,6 +8,7 @@
 
 #define SA_INTERRUPT    0x20000000
 #define SA_SHIRQ        0x04000000
+#define SA_NOPROFILE   0x02000000
 
 #define SA_SAMPLE_RANDOM  0   /* Linux driver compatibility */